<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Input Class : CodeIgniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='CodeIgniter User Guide' />

<style type="text/css">
<!--
.style1 {color: #0033CC}
-->
</style>
</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>CodeIgniter User Guide Version 2.0.3</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Input and Security Class
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>입력클래스 Input Class</h1>

<p>입력클래스는 두가지 목적으로 사용됩니다:</p>

<ol>
<li>보안을 위해서 전역(global) 입력 데이터를 전처리 합니다.</li>
<li>입력클래스는 입력데이터를 가져오거나, 가져온 데이터를 전처리하는 헬퍼함수를 제공합니다.</li>
</ol>

<p class="important"><strong>참고:</strong> 이 클래스는 시스템에 의해 자동으로 초기화 되므로 여러분이 초기화 하실 필요가 없습니다.</p>


<h2>보안 필터링 Security Filtering</h2>

<p>새 <span class="style1">컨트롤러</span>가 호출되면 보안필터링 함수는 자동으로 호출됩니다.  필터링은 다음 작업을 수행합니다:</p>

<ul>
<li>전역(global) GET 배열을 삭제합니다.CodeIgniter 는 GET 문자열을 사용하지 않기때문에, 남겨둘 필요가 없습니다.</li>
<li>만약 register_globals 가 on 되어 있는 경우라면 모든 전역(global)변수들을 삭제합니다.</li>
<li> POST/COOKIE 배열의 키들을 필터링하여 영문자나 숫자만(그리고 다른것도 약간) 허용합니다.</li>
<li>XSS (Cross-site Scripting Hacks) 필터링을 제공합니다. 이는 전역적으로 활성화 될수도 있고, 요청에 따라 활성화 될수도 있습니다.</li>
<li>줄바꿈 문자를  \n 로 표준화 합니다 </li>
</ul>


<h2>XSS Filtering</h2>
  <p>입력 클래스는 크로스 사이트 스크립팅 공격을 방지하기 위해 자동으로 입력 값을 필터링하는 기능이 있습니다.<kbd>application/config/config.php</kbd> 
    파일을 다음과 같이 설정하여 POST 또는 COOKIE 데이터를 처리할 때 자동으로 필터를 실행할 수 있습니다 :</p>  
  <code>$config['global_xss_filtering'] = TRUE;</code> 
  <p>응용 프로그램에서 XSS 필터링을 사용하는 방법은 <a href="security.html">보안클래스</a>를 참조하십시오.</p>



<h2>POST, COOKIE, 혹은  SERVER 데이터 사용하기 </h2>

<p>CodeIgniter는 POST, COOKIE 혹은 SERVER 아이템을 가져오기 위해서 3가지 헬퍼함수를 제공합니다.  각 아이템들을 직접가져오는것보다($_POST['something']) 헬퍼를 사용하면 더 좋은 이유는 ,헬퍼가 아이템이 세팅되어있는지를 먼저체크하고 세팅되어있지않다면 false 를 반환하기 때문입니다.  아이템이 존재하는지 먼저 검사하고 처리할 필요가 없어집니다.
다시말하면 , 일반적으로 여러분안 아래와 같이 프로그램할 것입니다.:</p>

<code>
if ( ! isset($_POST['something']))<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$something = FALSE;<br />
}<br />
else<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;$something = $_POST['something'];<br />
}</code>

<p> CodeIgniter 에서는 아래와 같이 간단하게 위의 기능을 수행할 수 있는것이죠:</p>

<code>$something = $this->input->post('something');</code>

<p>세가지함수는 아래와 같습니다:</p>

<ul>
<li>$this->input->post()</li>
<li>$this->input->cookie()</li>
<li>$this->input->server()</li>
</ul>

<h2>$this->input->post()</h2>

<p>첫번째 파라미터는 POST 아이템의 이름(name)이 들어갑니다:</p>

<code>$this->input->post('some_data');</code>

<p>찾고자하는 아이템이 존재하지않으면 함수는 FALSE 를 리턴합니다.</p>

<p>선택적으로 사용하는 두번째 파라미터는 데이터를 XSS 필터링 되게 합니다.  두번재 파라미터를 TRUE로 하시면 됩니다;</p>
  <code>$this->input->post('some_data', TRUE);</code> 
  <p>파라미터를 지정하지 않고 호출하면 POST로 넘어오는 모든 값을 연관 배열로 리턴합니다.</p>
  <p>첫 번째 파라미터를 공백으로 하고, 두번째 인수에 부울(boolean)값을 넘겨주면,부울값에 따라모든 POST값에 XSS필터를 적용하거나,하지 
    않을 수 있습니다.</p>
  <p>POST입력값이 없으면 FALSE를 리턴합니다.</p>
  <code>
	$this->input->post(); // returns all POST items with XSS filter
	<br />
	$this->input->post(NULL, FALSE); // returns all POST items without XSS
</code>

<h2>$this->input->get()</h2>

<p>이함수는 get 데이터를 가져온다는 점만 빼면 post 함수와 동일합니다:</p>
  <code>$this->input->get('some_data', TRUE);</code> 
  <p>파라미터를 지정하지 않고 호출하면 GET으로 넘어오는 모든 값을 연관 배열로 리턴합니다.</p>
  <p>첫 번째 파라미터를 공백으로 하고, 두번째 인수에 부울(boolean)값을 넘겨주면,부울값에 따라모든 GET값에 XSS필터를 적용하거나,하지 
    않을 수 있습니다.</p>
  <p>GET입력값이 없으면 FALSE를 리턴합니다.</p>
  <p><code>$this->input->get(); // returns all GET items with XSS filter <br />
    $this->input->get(NULL, FALSE); // returns all GET items without XSS filtering 
    </code> </p>
<h2>$this->input->get_post()</h2>

<p>이함수는 post  와 get 을 모두 뒤져서 데이터를 가져옵니다 . post를 먼저찾고 그다음 get 을 찾습니다:</p>

<code>$this->input->get_post('some_data', TRUE);</code>

<h2>$this->input->cookie()</h2>

<p>이함수는 쿠키에서 데이터를 가져온다는점을 배면 post 함수와 동일합니다:</p>

<code>$this->input->cookie('some_data', TRUE);</code>

<h2>$this->input->server()</h2>

<p>이함수는 server변수들 에서 데이터를 가져온다는점을 빼면 위 함수와 동일합니다:</p>

<code>$this->input->server('some_data');</code>

<h2>$this->input->set_cookie()</h2>  <p>쿠키를 생성합니다. 이 메서드를 이용해서 쿠키를 생성하는데는 두가지 방법이 있습니다. 하나는 배열을 넘겨주는것이고 다른 하나는 개별변수를 
    넘겨주는것입니다.</p>
  <p>&nbsp;</p>  <h4>배열을 이용하는 방법 </h4>  <p>연관배열을 첫번째 파라미터로 넘겨주면 됩니다.:</p>

<code>$cookie = array(<br />
&nbsp;&nbsp;&nbsp;&nbsp;'name'&nbsp;&nbsp;&nbsp;=> 'The Cookie Name',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'value'&nbsp;&nbsp;=> 'The Value',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'expire' => '86500',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'domain' => '.some-domain.com',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'path'&nbsp;&nbsp;&nbsp;=> '/',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'prefix' => 'myprefix_',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'secure' => TRUE<br />
);<br />
<br />
$this->input->set_cookie($cookie);
</code>

  <p><strong>주의:</strong></p>  <p>이름(name)과 값(value) 만을 사용해야 합니다. 쿠키를 삭제하려면 만료시간(expire)에 공백을 넣습니다.</p>
  <p>만료시간은 <strong>초</strong> 단위이며, 현재시간 + 지정한 만료시간으로 설정될 것입니다.개발자는 현재시간을 고려할 
    필요없이 지금으로 부터 몇초후에 쿠키가 만료될지만 지정하시면 됩니다 .만료시간을 0으로 하면 브라우저가 열려있는동안에만 쿠키가 살아있습니다.</p>
  <p>사이트 요청방법에 상관없이 전체 사이트에 적용할 쿠키는 <strong>domain</strong> 항목에 점으로 시작하는 사이트주소를 
    적으시면 됩니다</p>
  <p>예: .your-domain.com</p>  <p>보통 패스(path)부분은 신경쓸 필요가 없습니다. 메서드가 루트패스를 알아서 설정합니다.</p>  <p>서버의 다른 쿠키와 이름이 같을 가능성이 있을 경우에만, 접두어(prefix)를 설정하세요.</p>  <p>보안 부울 값은 보안 쿠키를 사용하려는 경우에만 TRUE로해야합니다.</p>  <h4>개별 매개 변수를 전달하는 방법</h4>  <p>아래와 같이 각각 전달합니다:</p>

<code>$this->input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure);</code>

<h2>$this->input->cookie()</h2>  <p>쿠키를 읽어옵니다. 첫번째 파라미터는 읽을 쿠키의 이름이며, 접두어가 있는경우 접두어도 같이 적어주세요:</p>  <code>cookie('some_cookie');</code> 
  <p>읽으려고하면 쿠키가 존재하지 않으면 FALSE (Boolean)을 리턴합니다.</p>  <p>옵션인 두번째 파라미터는 데이터에 XSS 필터링을 적용할지를 결정합니다. 두번째 파라미터가 TRUE일 경우 적용됩니다;</p>
  <p><code>cookie('some_cookie', TRUE);</code></p>


<h2>$this->input->ip_address()</h2>
<p>현재사용자의 IP 주소를 리턴합니다.  IP 주소가 유효하지 않다면 함수는 0.0.0.0 을 리턴합니다 </p>
<code>echo $this->input->ip_address();</code>


<h2>$this->input->valid_ip(<var>$ip</var>)</h2>

<p>IP 주소를 받아서  주소가 유효한지 아닌지에 따라서 TRUE 나 FALSE 를 리턴합니다.  참고:  The $this->input->ip_address() 함수는 자동으로 ip 유효성을검사합니다.</p>

<code>if ( ! $this-&gt;input-&gt;valid_ip($ip))<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; echo 'Not Valid';<br />
}<br />
else<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp; echo 'Valid';<br />
}</code>


<h2>$this->input->user_agent()</h2>
<p>현재 사용자의 user agent (web browser) 를 리턴합니다. 유효한 값이 없을때는 FALSE 를 리턴합니다.</p>
<code>echo $this->input->user_agent();</code>
<p>See the <a href="user_agent.html">User Agent Class</a> for methods which extract information from the user agent string.</p>

<h2>$this->input->request_headers()</h2>
  <p>Apache 이외 (<a href="http://php.net/apache_request_headers">apache_request_headers()</a> 
    를 지원하지 않는) 환경에서 유용합니다. 헤더의 배열을 반환합니다.</p>

<code>$headers = $this->input->request_headers();</code>

<h2>$this->input->get_request_header();</h2>  <p>요청 헤더의 배열에서 지정한 요소를 반환합니다.</p>

<code>$this->input->get_request_header('some-header', TRUE);</code>


<h2>$this->input->is_ajax_request()</h2>  
  <p>서버 헤더에 <var>HTTP_X_REQUESTED_WITH</var> 가 설정되어 있는지 확인하고 결과를 부울(TRUE,FALSE)로 
    반환합니다.</p>
  <p>&nbsp;</p>


<h2>$this->input->is_cli_request()</h2>
  <p>STDIN 상수​가 설정되어 있는지 확인합니다. PHP가 커맨드 라인에서 실행되고 있는지 확인하는 안전한 방법입니다.</p>
  <p>&nbsp;</p>

<code>$this->input->is_cli_request()</code>



</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="image_lib.html">Image Manipulation Class</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="loader.html">Loader Class</a>
</p>
<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 - 2011 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>

</body>
</html>